<html manifest=node.manifest>

<head>
  <meta charset="utf-8">
  <link rel="shortcut icon" type="image/ico" href="../../files/mixly.ico">
  <title></title>
  <script type="text/javascript" src="../common/environment.js"></script>
  <script type="text/javascript" src="../common/jquery-1.11.3.min.js"></script>
  <script type="text/javascript" src="config.js"></script>
  <script type="text/javascript" src="../common/modules/board-config.js"></script>
  <script type="text/javascript" src="../common/modules/lazyload.js"></script>
  <script type="text/javascript" src="../common/modules/load-remove-script.js"></script>
  <script type="text/javascript" src="../common/modules/load-remove-css.js"></script>

  <script type="text/javascript" src="../common/core/blockly_compressed.js"></script>
  <script type="text/javascript" src="../common/core/base.js"></script>
  <script type="text/javascript" src="../common/core/arduino.js"></script>
  <script type="text/javascript" src="../common/core/names.js"></script>
  <script type="text/javascript" src="../common/core/variables.js"></script>
  <script type="text/javascript" src="../common/core/procedures.js"></script>
  <script type="text/javascript" src="libraries/company_pin.js"></script>

  <script type="text/javascript" src="../common/js/drag.js"></script>
  <script type="text/javascript" src="../common/js/code.js"></script>
  <script type="text/javascript" src="libraries/digitalPinToInterrupt.js"></script>
  <script type="text/javascript" src="../common/js/Blob.js"></script>
  <script type="text/javascript" src="../common/spin.js"></script>
  <script type="text/javascript" src="../common/js/FileSaver.min.js"></script>
  <script type="text/javascript" src="../common/js/blockly_helper.js"></script>
  <script src="../common/js/lib/ace/ace.js" type="application/javascript"></script>
  <script src="../common/js/lib/ace/ext-language_tools.js" type="application/javascript"></script>

  <script type="text/javascript" src="../common/modules/serial-highcharts.js"></script>
  <script type="text/javascript" src="../common/modules/title.js"></script>
  <script type="text/javascript" src="../common/modules/mixlyClient/arduino-main.js"></script>

  <script type="text/javascript" src="libraries/myblock.js"></script>
  <script type="text/javascript" src="../arduino_avr/generators/factory.js"></script>
  <script type="text/javascript" src="../arduino_avr/generators/blynk.js"></script>
  <script type="text/javascript" src="../arduino_avr/generators/pins.js"></script>
  <script type="text/javascript" src="../arduino_avr/generators/inout.js"></script>
  <script type="text/javascript" src="../arduino_avr/generators/control.js"></script>
  <script type="text/javascript" src="../arduino_avr/generators/math.js"></script>
  <script type="text/javascript" src="../arduino_avr/generators/text.js"></script>
  <script type="text/javascript" src="../arduino_avr/generators/lists.js"></script>
  <script type="text/javascript" src="../arduino_avr/generators/logic.js"></script>
  <script type="text/javascript" src="../arduino_avr/generators/display.js"></script>
  <script type="text/javascript" src="../arduino_avr/generators/communicate.js"></script>
  <script type="text/javascript" src="../arduino_avr/generators/storage.js"></script>
  <script type="text/javascript" src="../arduino_avr/generators/sensor.js"></script>
  <script type="text/javascript" src="../arduino_avr/generators/ethernet.js"></script>
  <script type="text/javascript" src="../arduino_avr/generators/variables.js"></script>
  <script type="text/javascript" src="../arduino_avr/generators/procedures.js"></script>
  <script type="text/javascript" src="../arduino_avr/generators/serial.js"></script>
  <script type="text/javascript" src="../arduino_avr/generators/actuator.js"></script>
  <script type="text/javascript" src="generators/ethernet.js"></script>
  <script type="text/javascript" src="generators/pins.js"></script>
  <script type="text/javascript" src="generators/inout.js"></script>
  <script type="text/javascript" src="generators/control.js"></script>
  <script type="text/javascript" src="generators/math.js"></script>
  <script type="text/javascript" src="generators/text.js"></script>
  <script type="text/javascript" src="generators/lists.js"></script>
  <script type="text/javascript" src="generators/logic.js"></script>
  <script type="text/javascript" src="generators/communicate.js"></script>
  <script type="text/javascript" src="generators/storage.js"></script>
  <script type="text/javascript" src="generators/sensor.js"></script>
  <script type="text/javascript" src="generators/variables.js"></script>
  <script type="text/javascript" src="generators/procedures.js"></script>
  <script type="text/javascript" src="generators/serial.js"></script>
  <script type="text/javascript" src="generators/actuator.js"></script>
  <script type="text/javascript" src="../arduino_avr/generators/tools.js"></script>
  <script type="text/javascript" src="../arduino_avr/blocks/blynk.js"></script>
  <script type="text/javascript" src="../arduino_avr/blocks/factory.js"></script>
  <script type="text/javascript" src="../arduino_avr/blocks/pins.js"></script>
  <script type="text/javascript" src="../arduino_avr/blocks/inout.js"></script>
  <script type="text/javascript" src="../arduino_avr/blocks/control.js"></script>
  <script type="text/javascript" src="../arduino_avr/blocks/math.js"></script>
  <script type="text/javascript" src="../arduino_avr/blocks/text.js"></script>
  <script type="text/javascript" src="../arduino_avr/blocks/lists.js"></script>
  <script type="text/javascript" src="../arduino_avr/blocks/logic.js"></script>
  <script type="text/javascript" src="../arduino_avr/blocks/display.js"></script>
  <script type="text/javascript" src="../arduino_avr/blocks/communicate.js"></script>
  <script type="text/javascript" src="../arduino_avr/blocks/storage.js"></script>
  <script type="text/javascript" src="../arduino_avr/blocks/sensor.js"></script>
  <script type="text/javascript" src="../arduino_avr/blocks/ethernet.js"></script>
  <script type="text/javascript" src="../arduino_avr/blocks/variables.js"></script>
  <script type="text/javascript" src="../arduino_avr/blocks/procedures.js"></script>
  <script type="text/javascript" src="../arduino_avr/blocks/serial.js"></script>
  <script type="text/javascript" src="../arduino_avr/blocks/actuator.js"></script>
  <script type="text/javascript" src="blocks/actuator.js"></script>
  <script type="text/javascript" src="blocks/pins.js"></script>
  <script type="text/javascript" src="blocks/inout.js"></script>
  <script type="text/javascript" src="blocks/control.js"></script>
  <script type="text/javascript" src="blocks/math.js"></script>
  <script type="text/javascript" src="blocks/text.js"></script>
  <script type="text/javascript" src="blocks/lists.js"></script>
  <script type="text/javascript" src="blocks/logic.js"></script>
  <script type="text/javascript" src="blocks/communicate.js"></script>
  <script type="text/javascript" src="blocks/storage.js"></script>
  <script type="text/javascript" src="blocks/sensor.js"></script>
  <script type="text/javascript" src="blocks/ethernet.js"></script>
  <script type="text/javascript" src="blocks/variables.js"></script>
  <script type="text/javascript" src="blocks/procedures.js"></script>
  <script type="text/javascript" src="blocks/serial.js"></script>
  <script type="text/javascript" src="blocks/display.js"></script>
  <script type="text/javascript" src="../arduino_avr/blocks/tools.js"></script>
  <script src="../common/layui/layui.js"></script>
  <link rel="stylesheet" type="text/css" href="../common/layui/css/layui.css" />
  <link rel="stylesheet" type="text/css" href="css/color_esp32_arduino.css" />
  <link rel="stylesheet" type="text/css" href="../common/css/ACEfont.css" />
  <link rel="stylesheet" type="text/css" href="../common/css/fontello.css" />
  <link rel="stylesheet" type="text/css" href="../common/css/nav.css" />
  <link rel="stylesheet" type="text/css" href="../common/css/library.css" />
  <script type="text/javascript" src="../common/dap.umd.js"></script>
  <script src="../common/arduino-init.js"></script>
  <script src="../common/interface-init.js"></script>
</head>

<body onload="init()">
  <xml id="toolbox" style="display: none">
    <category name="" id="catInOut" colour="20">
      <block type="inout_highlow">
      </block>
      <block type="inout_digital_write2">
        <value name="PIN">
          <shadow type="pins_digitalWrite"></shadow>
        </value>
        <value name="STAT">
          <shadow type="inout_highlow">
          </shadow>
        </value>
      </block>
      <block type="inout_digital_read2">
        <value name="PIN">
          <shadow type="pins_digital"></shadow>
        </value>
      </block>
      <block type="inout_touchRead">
        <value name="PIN">
          <shadow type="pins_touch">
          </shadow>
        </value>
      </block>
      <block type="touchAttachInterrupt">
        <value name="PIN">
          <shadow type="pins_touch"></shadow>
        </value>
        <value name="threshold">
          <shadow type="math_number">
            <field name="NUM">20</field>
          </shadow>
        </value>
      </block>
      <block type="ledcWrite">
        <value name="PIN">
          <shadow type="pins_pwm"></shadow>
        </value>
        <value name="NUM">
          <shadow type="math_number">
            <field name="NUM">0</field>
          </shadow>
        </value>
      </block>
      <block type="inout_esp32_dac">
        <value name="value">
          <shadow type="math_number">
            <field name="NUM">0</field>
          </shadow>
        </value>
      </block>
      <block type="inout_analog_read">
        <value name="PIN">
          <shadow type="pins_analog"></shadow>
        </value>
      </block>
      <block type="OneButton_interrupt">
        <value name="PIN">
          <shadow type="pins_digital"></shadow>
        </value>
        <value name="STAT">
          <shadow type="inout_highlow">
          </shadow>
        </value>
      </block>
      <block type="ESP32touchButton">
        <value name="PIN">
          <shadow type="pins_touch">
          </shadow>
        </value>
      </block>
      <block type="controls_attachInterrupt">
        <value name="PIN">
          <shadow type="pins_interrupt"></shadow>
        </value>
      </block>
      <block type="controls_detachInterrupt">
        <value name="PIN">
          <shadow type="pins_interrupt"></shadow>
        </value>
      </block>
      <block type="touchAttachInterrupt">
        <value name="PIN">
          <shadow type="pins_touch"></shadow>
        </value>
        <value name="threshold">
          <shadow type="math_number">
            <field name="NUM">20</field>
          </shadow>
        </value>
      </block>
      <block type="inout_pulseIn">
        <value name="PIN">
          <shadow type="pins_digital"></shadow>
        </value>
      </block>
      <block type="inout_pulseIn2">
        <value name="PIN">
          <shadow type="pins_digital"></shadow>
        </value>
        <value name="TIMEOUT">
          <shadow type="math_number">
            <field name="NUM">1000000</field>
          </shadow>
        </value>
      </block>
      <block type="inout_pinMode">
        <value name="PIN">
          <shadow type="pins_digital"></shadow>
        </value>
      </block>
      <block type="inout_shiftout">
        <value name="PIN1">
          <shadow type="pins_digital"></shadow>
        </value>
        <value name="PIN2">
          <shadow type="pins_digital"></shadow>
        </value>
        <value name="DATA">
          <shadow type="math_number">
            <field name="NUM">0</field>
          </shadow>
        </value>
      </block>
      <block type="ADS1015_setGain">
      </block>
      <block type="ADS1015_Get_Value">
      </block>
      <block type="PCF8591T">
      </block>
    </category>
    <category id="catControl" colour="120">
      <block type="base_setup">
      </block>
      <block type="controls_end_program">
      </block>
      <block type="do_while">
        <value name="select_data">
          <shadow type="logic_boolean">
          </shadow>
        </value>
      </block>
      <block type="controls_whileUntil">
        <value name="BOOL">
          <shadow type="logic_boolean">
          </shadow>
        </value>
      </block>
      <block type="controls_delay">
        <value name="DELAY_TIME">
          <shadow type="math_number">
            <field name="NUM">1000</field>
          </shadow>
        </value>
      </block>
      <block type="controls_if">
      </block>
      <block type="controls_switch_case">
      </block>
      <block type="controls_for">
        <value name="FROM">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
        <value name="TO">
          <shadow type="math_number">
            <field name="NUM">10</field>
          </shadow>
        </value>
        <value name="STEP">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
      </block>
      <block type="controls_flow_statements">
      </block>
      <block type="controls_millis">
      </block>
      <block type="controls_runnig_core">
        <value name="length">
          <shadow type="math_number">
            <field name="NUM">4096</field>
          </shadow>
        </value>
      </block>
      <block type="control_core_delay">
        <value name="sleeplength">
          <shadow type="math_number">
            <field name="NUM">1000</field>
          </shadow>
        </value>
      </block>
      <block type="controls_hw_timer">
        <value name="TIME">
          <shadow type="math_number">
            <field name="NUM">500</field>
          </shadow>
        </value>
      </block>
      <block type="controls_hw_timer_start">
      </block>
      <block type="controls_hw_timer_stop">
      </block>
      <block type="simple_timer">
        <field name="NO">1</field>
        <value name="timein">
          <shadow type="math_number">
            <field name="NUM">1000</field>
          </shadow>
        </value>
      </block>
      <block type="super_delay_function1"></block>
      <block type="execute_super_delay_function1">
        <value name="time_interval">
          <shadow type="math_number">
            <field name="NUM">1000</field>
          </shadow>
        </value>
        <value name="frequency">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
      </block>
      <value name="frequency">
        <shadow type="math_number">
          <field name="NUM">1</field>
        </shadow>
      </value>
      </block>
    </category>
    <category id="catMath" colour="230">
      <block type="math_number">
      </block>
      <block type="math_arithmetic">
        <value name="A">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
        <value name="B">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
      </block>
      <block type="math_bit">
        <value name="A">
          <shadow type="math_number">
            <field name="NUM">0</field>
          </shadow>
        </value>
        <value name="B">
          <shadow type="math_number">
            <field name="NUM">0</field>
          </shadow>
        </value>
      </block>
      <block type="math_trig">
      </block>
      <block type="variables_operation">
        <value name="data">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
        <value name="variables">
          <shadow type="math_number">
            <field name="NUM">item</field>
          </shadow>
        </value>
      </block>
      <block type="math_auto_add_or_minus">
        <field name="math_auto_add_minus_type">++</field>
        <value name="math_auto_add_minus_output">
          <shadow type="variables_get">
            <field name="VAR">item</field>
          </shadow>
        </value>
      </block>
      <block type="math_to_int">
      </block>
      <block type="math_SizeOf">
        <value name="data">
          <shadow type="arduino_variate_type">
          </shadow>
        </value>
      </block>
      <block type="math_max_min">
        <value name="A">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
        <value name="B">
          <shadow type="math_number">
            <field name="NUM">2</field>
          </shadow>
        </value>
      </block>
      <block type="math_random_seed">
        <value name="NUM">
          <shadow type="math_number">
            <field name="NUM">997</field>
          </shadow>
          <block type="controls_millis">
            <field name="UNIT">millis</field>
          </block>
        </value>
      </block>
      <block type="math_random_int">
        <value name="FROM">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
        <value name="TO">
          <shadow type="math_number">
            <field name="NUM">100</field>
          </shadow>
        </value>
      </block>
      <block type="math_constrain">
        <value name="LOW">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
        <value name="HIGH">
          <shadow type="math_number">
            <field name="NUM">100</field>
          </shadow>
        </value>
      </block>
      <block type="base_map">
        <value name="fromLow">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
        <value name="fromHigh">
          <shadow type="math_number">
            <field name="NUM">100</field>
          </shadow>
        </value>
        <value name="toLow">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
        <value name="toHigh">
          <shadow type="math_number">
            <field name="NUM">1000</field>
          </shadow>
        </value>
      </block>
    </category>
    <category id="catLogic" colour="210">
      <block type="logic_compare">
      </block>
      <block type="logic_operation">
      </block>
      <block type="logic_negate">
      </block>
      <block type="logic_boolean">
      </block>
      <block type="logic_null">
      </block>
      <block type="logic_true_or_false">
      </block>
    </category>
    <category id="catText" colour="160">
      <block type="text">
        <field name="TEXT">hello</field>
      </block>
      <block type="text_char">
        <field name="TEXT">a</field>
      </block>
      <block type="text_join">
        <value name="A">
          <shadow type="text">
            <field name="TEXT">Hello</field>
          </shadow>
        </value>
        <value name="B">
          <shadow type="text">
            <field name="TEXT">Mixly</field>
          </shadow>
        </value>
      </block>
      <block type="text_join2">
        <value name="ADD0">
          <block type="text">
            <field name="TEXT">A</field>
          </block>
        </value>
        <value name="ADD1">
          <block type="text">
            <field name="TEXT">B</field>
          </block>
        </value>
        <value name="ADD2">
          <block type="text">
            <field name="TEXT">C</field>
          </block>
        </value>
      </block>
      <block type="text_to_number">
        <value name="VAR">
          <shadow type="text">
            <field name="TEXT">123</field>
          </shadow>
        </value>
      </block>
      <block type="String_indexOf">
        <value name="str1">
          <shadow type="text">
            <field name="TEXT">Mixly</field>
          </shadow>
        </value>
        <value name="str2">
          <shadow type="text">
            <field name="TEXT">y</field>
          </shadow>
        </value>
      </block>
      <block type="substring">
        <value name="name">
          <shadow type="text">
            <field name="TEXT">substring</field>
          </shadow>
        </value>
        <value name="Start">
          <shadow type="math_number">
            <field name="NUM">0</field>
          </shadow>
        </value>
        <value name="end">
          <shadow type="math_number">
            <field name="NUM">3</field>
          </shadow>
        </value>
      </block>
      <block type="decimal_places">
        <value name="numeral">
          <shadow type="math_number">
            <field name="NUM">6.666</field>
          </shadow>
        </value>
        <value name="decimal_places">
          <shadow type="math_number">
            <field name="NUM">2</field>
          </shadow>
        </value>
      </block>
      <block type="letter_conversion">
        <value name="String">
          <shadow type="math_number">
            <field name="NUM">String</field>
          </shadow>
        </value>
      </block>
      <block type="data_replacement">
        <value name="String">
          <shadow type="math_number">
            <field name="NUM">String</field>
          </shadow>
        </value>
        <value name="source_data">
          <shadow type="text">
            <field name="TEXT">s</field>
          </shadow>
        </value>
        <value name="replace">
          <shadow type="text">
            <field name="TEXT">Q</field>
          </shadow>
        </value>
      </block>
      <block type="eliminate">
        <value name="String">
          <shadow type="math_number">
            <field name="NUM">String</field>
          </shadow>
        </value>
      </block>
      <block type="first_and_last">
        <value name="String">
          <shadow type="text">
            <field name="TEXT">substring</field>
          </shadow>
        </value>
        <value name="String1">
          <shadow type="text">
            <field name="TEXT">substring</field>
          </shadow>
        </value>
      </block>
      <block type="type_conversion">
        <value name="variable">
          <shadow type="text">
            <field name="TEXT">substring</field>
          </shadow>
        </value>
      </block>
      <block type="ascii_to_char">
        <value name="VAR">
          <shadow type="math_number">
            <field name="NUM">223</field>
          </shadow>
        </value>
      </block>
      <block type="char_to_ascii">
        <field name="TEXT">a</field>
      </block>
      <block type="number_to_text">
        <value name="VAR">
          <shadow type="math_number">
            <field name="NUM">0</field>
          </shadow>
        </value>
      </block>
      <block type="text_length">
        <value name="VAR">
          <shadow type="text">
            <field name="TEXT">hello</field>
          </shadow>
        </value>
      </block>
      <block type="text_char_at">
        <value name="VAR">
          <shadow type="text">
            <field name="TEXT">hello</field>
          </shadow>
        </value>
        <value name="AT">
          <shadow type="math_number">
            <field name="NUM">0</field>
          </shadow>
        </value>
      </block>
      <block type="text_equals_starts_ends">
        <value name="STR1">
          <shadow type="text">
            <field name="TEXT"></field>
          </shadow>
        </value>
        <value name="STR2">
          <shadow type="text">
            <field name="TEXT"></field>
          </shadow>
        </value>
      </block>
      <block type="text_compareTo">
        <value name="STR1">
          <shadow type="text">
            <field name="TEXT"></field>
          </shadow>
        </value>
        <value name="STR2">
          <shadow type="text">
            <field name="TEXT"></field>
          </shadow>
        </value>
      </block>
    </category>
    <category id="catLists" colour="260">
      <block type="lists_create_with2">
      </block>
      <block type="lists_create_with_text2">
      </block>
      <block type="lists_length">
      </block>
      <block type="lists_getIndex">
        <value name="AT">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
      </block>
      <block type="lists_setIndex">
        <value name="AT">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
      </block>
      <block type="lists_array2_setup">
        <field name="lists_create_type">int</field>
        <field name="lists_create_name">mylist</field>
        <statement name="lists_with_2_1_data">
          <block type="lists_array2_setup_get_data">
            <mutation items="3"></mutation>
            <value name="ADD0">
              <block type="math_number">
                <field name="NUM">0</field>
              </block>
            </value>
            <value name="ADD1">
              <block type="math_number">
                <field name="NUM">1</field>
              </block>
            </value>
            <value name="ADD2">
              <block type="math_number">
                <field name="NUM">2</field>
              </block>
            </value>
            <next>
              <block type="lists_array2_setup_get_data">
                <mutation items="3"></mutation>
                <value name="ADD0">
                  <block type="math_number">
                    <field name="NUM">1</field>
                  </block>
                </value>
                <value name="ADD1">
                  <block type="math_number">
                    <field name="NUM">2</field>
                  </block>
                </value>
                <value name="ADD2">
                  <block type="math_number">
                    <field name="NUM">3</field>
                  </block>
                </value>
                <next>
                  <block type="lists_array2_setup_get_data">
                    <mutation items="3">
                    </mutation>
                    <value name="ADD0">
                      <block type="math_number">
                        <field name="NUM">2</field>
                      </block>
                    </value>
                    <value name="ADD1">
                      <block type="math_number">
                        <field name="NUM">3</field>
                      </block>
                    </value>
                    <value name="ADD2">
                      <block type="math_number">
                        <field name="NUM">4</field>
                      </block>
                    </value>
                  </block>
                </next>
              </block>
            </next>
          </block>
        </statement>
      </block>
      <block type="create_array2_with_text">
        <value name="name">
          <shadow type="math_number">
            <field name="NUM">array</field>
          </shadow>
        </value>
        <value name="line">
          <shadow type="math_number">
            <field name="NUM">2</field>
          </shadow>
        </value>
        <value name="list">
          <shadow type="math_number">
            <field name="NUM">2</field>
          </shadow>
        </value>
        <value name="String">
          <shadow type="math_number">
            <field name="NUM">{0,0},{0,0}</field>
          </shadow>
        </value>
      </block>
      <block type="array2_assignment">
        <value name="name">
          <shadow type="math_number">
            <field name="NUM">array</field>
          </shadow>
        </value>
        <value name="line">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
        <value name="list">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
        <value name="assignment">
          <shadow type="math_number">
            <field name="NUM">0</field>
          </shadow>
        </value>
      </block>
      <block type="get_array2_value">
        <value name="name">
          <shadow type="math_number">
            <field name="NUM">array</field>
          </shadow>
        </value>
        <value name="line">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
        <value name="list">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
      </block>
      <block type="loop_array">
        <value name="name">
          <shadow type="math_number">
            <field name="NUM">array</field>
          </shadow>
        </value>
      </block>
      <block type="lists_array2_get_length">
      </block>
    </category>
    <category id="catVar" colour="330" custom="VARIABLE">
    </category>
    <category id="catFun" custom="PROCEDURE" colour="290">
    </category>
    <category id="catSerialPort" colour="65">
      <block type="serial_begin">
        <value name="CONTENT">
          <shadow type="math_number">
            <field name="NUM">9600</field>
          </shadow>
        </value>
      </block>
      <block type="serial_write">
      </block>
      <block type="serial_print">
        <field name="serial_select">Serial</field>
        <field name="new_line">println</field>
      </block>
      <block type="serial_print_num">
        <value name="CONTENT">
          <shadow type="math_number">
            <field name="NUM">0</field>
          </shadow>
        </value>
      </block>
      <block type="serial_available">
      </block>
      <block type="serial_readstr">
      </block>
      <block type="serial_readstr_until">
        <value name="CONTENT">
          <shadow type="text_char">
            <field name="TEXT">a</field>
          </shadow>
        </value>
      </block>
      <block type="serial_parseInt_Float">
      </block>
      <block type="serial_flush">
      </block>
      <block type="serial_HardwareSerial">
        <value name="TX">
          <shadow type="pins_digital"></shadow>
        </value>
        <value name="RX">
          <shadow type="pins_digital"></shadow>
        </value>
        <value name="CONTENT">
          <shadow type="math_number">
            <field name="NUM">9600</field>
          </shadow>
        </value>
      </block>
      <block type="serial_event">
      </block>
    </category>
    <category id="catOnBoard" name="catOnBoard" colour="65">
      <block type="inout_touchRead">
        <value name="PIN">
          <shadow type="pins_touch">
          </shadow>
        </value>
      </block>
      <block type="ESP32_hallRead"></block>
      <block type="ESP32_temprature"></block>
    </category>
    <category id="catSensor" colour="40">
      <block type="chaoshengbo2">
      </block>
      <block type="DHT">
        <value name="PIN">
          <shadow type="pins_digital"></shadow>
        </value>
      </block>
      <block type="LM35">
        <value name="PIN">
          <shadow type="pins_analog"></shadow>
        </value>
      </block>
      <block type="ds18b20">
        <value name="PIN">
          <shadow type="pins_digital"></shadow>
        </value>
      </block>
      <block type="NTC_TEMP">
        <value name="NominalResistance">
          <shadow type="math_number">
            <field name="NUM">10000</field>
          </shadow>
        </value>
        <value name="betaCoefficient">
          <shadow type="math_number">
            <field name="NUM">3950</field>
          </shadow>
        </value>
        <value name="seriesResistor">
          <shadow type="math_number">
            <field name="NUM">10000</field>
          </shadow>
        </value>
      </block>
      <block type="mlx90614_init">
        <value name="mlx90614_address">
          <shadow type="math_number">
            <field name="NUM">0x5A</field>
          </shadow>
        </value>
      </block>
      <block type="mlx90614_get_data">
      </block>
      <block type="TCS34725_Get_RGB">
      </block>
      <block type="tcs230_init">
        <value name="tcs230_s0">
          <shadow type="pins_digital">
            <field name="PIN">2</field>
          </shadow>
        </value>
        <value name="tcs230_s1">
          <shadow type="pins_digital">
            <field name="PIN">3</field>
          </shadow>
        </value>
        <value name="tcs230_s2">
          <shadow type="pins_digital">
            <field name="PIN">4</field>
          </shadow>
        </value>
        <value name="tcs230_s3">
          <shadow type="pins_digital">
            <field name="PIN">5</field>
          </shadow>
        </value>
        <value name="tcs230_led">
          <shadow type="pins_digital">
            <field name="PIN">6</field>
          </shadow>
        </value>
        <value name="tcs230_out">
          <shadow type="pins_digital">
            <field name="PIN">7</field>
          </shadow>
        </value>
      </block>
      <block type="tcs230_Get_RGB">
      </block>
      <block type="SHT20">
      </block>
      <block type="ADXL345">
      </block>
      <block type="ADXL345_setOffset">
        <value name="OFFSET">
          <shadow type="math_number">
            <field name="NUM">120</field>
          </shadow>
        </value>
      </block>
      <block type="weightSensor">
        <value name="scale">
          <shadow type="math_number">
            <field name="NUM">1992</field>
          </shadow>
        </value>
      </block>
      <block type="MPU6050_update">
      </block>
      <block type="MPU6050">
      </block>
      <block type="mixgo_MPU9250">
      </block>
      <block type="BME280_READ">
        <value name="address">
          <shadow type="math_number">
            <field name="NUM">0x77</field>
          </shadow>
        </value>
      </block>
      <block type="PS2_init">
      </block>
      <block type="PS2_update">
      </block>
      <block type="PS2_Button"></block>
      <block type="PS2_stk"></block>
      <block type="encoder_init1">
      </block>
      <block type="encoder_read1"></block>
      <block type="encoder_write1">
        <value name="value">
          <shadow type="math_number">
            <field name="NUM">0</field>
          </shadow>
        </value>
      </block>      
    </category>
    <category id="catActuator" colour="100">
      <block type="HR8833_Motor_Setup">
        <value name="MOTOR_ID">
          <shadow type="motor_id">
            <field name="CHANNEL">1</field>
          </shadow>
        </value>
        <value name="PIN1">
          <shadow type="pins_digitalWrite">
            <field name="PIN">16</field>
          </shadow>
        </value>
        <value name="PIN2">
          <shadow type="pins_digitalWrite">
            <field name="PIN">17</field>
          </shadow>
        </value>
      </block>
      <block type="HR8833_Motor_Speed">
        <value name="MOTOR_ID">
          <shadow type="motor_id">
            <field name="CHANNEL">1</field>
          </shadow>
        </value>
        <value name="SPEED">
          <shadow type="math_number">
            <field name="NUM">100</field>
          </shadow>
        </value>
      </block>
      <block type="I2Cmotor">
        <value name="SPEED">
          <shadow type="math_number">
            <field name="NUM">100</field>
          </shadow>
        </value>
      </block>
      <block type="servo_move">
        <value name="DEGREE">
          <shadow type="math_number">
            <field name="NUM">0</field>
          </shadow>
        </value>
        <value name="DELAY_TIME">
          <shadow type="math_number">
            <field name="NUM">0</field>
          </shadow>
        </value>
      </block>
      <block type="servo_writeMicroseconds">
        <value name="DEGREE">
          <shadow type="math_number">
            <field name="NUM">1500</field>
          </shadow>
        </value>
      </block>
      <block type="servo_read_degrees">
        <value name="PIN">
          <shadow type="pins_digitalWrite"></shadow>
        </value>
      </block>
      <block type="controls_tone">
        <value name="PIN">
          <shadow type="pins_digitalWrite">
            <field name="PIN">17</field>
          </shadow>
        </value>
        <value name="CHANNEL">
          <shadow type="CHANNEL">
            <field name="PIN">0</field>
          </shadow>
        </value>
        <value name="FREQUENCY">
          <shadow type="tone_notes"></shadow>
        </value>
        <value name="DELAY_TIME">
          <shadow type="math_number">
            <field name="NUM">1000</field>
          </shadow>
        </value>
      </block>
      <block type="controls_notone">
        <value name="PIN">
          <shadow type="pins_digitalWrite">
            <field name="PIN">17</field>
          </shadow>
        </value>
        <value name="CHANNEL">
          <shadow type="CHANNEL"></shadow>
        </value>
      </block>
      <block type="group_stepper_setup">
        <value name="PIN1">
          <shadow type="pins_digitalWrite">
            <field name="PIN">1</field>
          </shadow>
        </value>
        <value name="PIN2">
          <shadow type="pins_digitalWrite">
            <field name="PIN">2</field>
          </shadow>
        </value>
        <value name="steps">
          <shadow type="math_number">
            <field name="NUM">100</field>
          </shadow>
        </value>
        <value name="speed">
          <shadow type="math_number">
            <field name="NUM">10</field>
          </shadow>
        </value>
      </block>
      <block type="group_stepper_setup2">
        <value name="PIN1">
          <shadow type="pins_digitalWrite">
            <field name="PIN">1</field>
          </shadow>
        </value>
        <value name="PIN2">
          <shadow type="pins_digitalWrite">
            <field name="PIN">2</field>
          </shadow>
        </value>
        <value name="PIN3">
          <shadow type="pins_digitalWrite">
            <field name="PIN">3</field>
          </shadow>
        </value>
        <value name="PIN4">
          <shadow type="pins_digitalWrite">
            <field name="PIN">4</field>
          </shadow>
        </value>
        <value name="steps">
          <shadow type="math_number">
            <field name="NUM">100</field>
          </shadow>
        </value>
        <value name="speed">
          <shadow type="math_number">
            <field name="NUM">10</field>
          </shadow>
        </value>
      </block>
      <block type="group_stepper_move">
        <value name="step">
          <shadow type="math_number">
            <field name="NUM">10</field>
          </shadow>
        </value>
      </block>
      <block type="RGB_color_seclet">
        <field name="COLOR">#ff0000</field>
      </block>
      <block type="RGB_color_rgb">
        <value name="R">
          <shadow type="math_number">
            <field name="NUM">0</field>
          </shadow>
        </value>
        <value name="G">
          <shadow type="math_number">
            <field name="NUM">0</field>
          </shadow>
        </value>
        <value name="B">
          <shadow type="math_number">
            <field name="NUM">0</field>
          </shadow>
        </value>
      </block>
      <block type="display_rgb_init">
        <value name="LEDCOUNT">
          <shadow type="math_number">
            <field name="NUM">4</field>
          </shadow>
        </value>
        <value name="Brightness">
          <shadow type="math_number">
            <field name="NUM">20</field>
          </shadow>
        </value>
      </block>
      <block type="display_rgb_Brightness">
        <value name="Brightness">
          <shadow type="math_number">
            <field name="NUM">20</field>
          </shadow>
        </value>
      </block>
      <block type="display_rgb">
        <value name="_LED_">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
        <value name="COLOR">
          <shadow type="math_number">
            <field name="NUM">
            </field>
          </shadow>
          <block type="RGB_color_rgb">
            <value name="R">
              <shadow type="math_number">
                <field name="NUM">0</field>
              </shadow>
            </value>
            <value name="G">
              <shadow type="math_number">
                <field name="NUM">0</field>
              </shadow>
            </value>
            <value name="B">
              <shadow type="math_number">
                <field name="NUM">0</field>
              </shadow>
            </value>
          </block>
        </value>
      </block>
      <block type="RGB_color_HSV">
        <value name="_LED_">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
        <value name="H">
          <shadow type="math_number">
            <field name="NUM">0</field>
          </shadow>
        </value>
        <value name="S">
          <shadow type="math_number">
            <field name="NUM">255</field>
          </shadow>
        </value>
        <value name="V">
          <shadow type="math_number">
            <field name="NUM">255</field>
          </shadow>
        </value>
      </block>
      <block type="display_rgb_show">
      </block>
      <block type="display_rgb_rainbow1">
        <value name="WAIT">
          <shadow type="math_number">
            <field name="NUM">20</field>
          </shadow>
        </value>
        <value name="Brightness">
          <shadow type="math_number">
            <field name="NUM">20</field>
          </shadow>
        </value>
      </block>
      <block type="display_rgb_rainbow3">
        <value name="rainbow_color">
          <shadow type="math_number">
            <field name="NUM">20</field>
          </shadow>
        </value>
      </block>
      <block type="GD5800_MP3_CONTROL">
        <value name="RXPIN">
          <shadow type="pins_digital" />
          <field name="PIN">4</field>
        </value>
        <value name="TXPIN">
          <shadow type="pins_digital" />
          <field name="PIN">5</field>
        </value>
      </block>
      <block type="GD5800_MP3_PLAY_NUM">
        <value name="RXPIN">
          <shadow type="pins_digital" />
          <field name="PIN">4</field>
        </value>
        <value name="TXPIN">
          <shadow type="pins_digital" />
          <field name="PIN">5</field>
        </value>
        <value name="NUM">
          <shadow type="math_number">
            <field name="NUM">2</field>
          </shadow>
        </value>
      </block>
      <block type="GD5800_MP3_LOOP_MODE">
        <value name="RXPIN">
          <shadow type="pins_digital" />
          <field name="PIN">4</field>
        </value>
        <value name="TXPIN">
          <shadow type="pins_digital" />
          <field name="PIN">5</field>
        </value>
      </block>
      <block type="GD5800_MP3_EQ_MODE">
        <value name="RXPIN">
          <shadow type="pins_digital" />
          <field name="PIN">4</field>
        </value>
        <value name="TXPIN">
          <shadow type="pins_digital" />
          <field name="PIN">5</field>
        </value>
      </block>
      <block type="GD5800_MP3_VOL">
        <value name="RXPIN">
          <shadow type="pins_digital" />
          <field name="PIN">4</field>
        </value>
        <value name="TXPIN">
          <shadow type="pins_digital" />
          <field name="PIN">5</field>
        </value>
        <value name="vol">
          <shadow type="math_number">
            <field name="NUM">20</field>
          </shadow>
        </value>
      </block>
      <block type="serial_softserial">
        <field name="serial_select">mySerial</field>
        <value name="RX">
          <shadow type="pins_digital">
            <field name="PIN">12</field>
          </shadow>
        </value>
        <value name="TX">
          <shadow type="pins_digital">
            <field name="PIN">13</field>
          </shadow>
        </value>
        <next>
          <block type="serial_begin">
            <field name="serial_select">mySerial</field>
            <value name="CONTENT">
              <shadow type="math_number">
                <field name="NUM">9600</field>
              </shadow>
            </value>
            <next>
              <block type="arduino_dfplayer_mini_begin">
                <field name="dfplayer_name">myPlayer</field>
                <value name="dfplayer_pin">
                  <shadow type="arduino_dfplayer_mini_pin">
                    <field name="pin_type">mySerial</field>
                  </shadow>
                </value>
              </block>
            </next>
          </block>
        </next>
      </block>
      <block type="arduino_dfplayer_mini_setTimeOut">
        <value name="timeout_data">
          <shadow type="math_number">
            <field name="NUM">500</field>
          </shadow>
        </value>
      </block>
      <block type="arduino_dfplayer_mini_volume">
        <value name="volume_data">
          <shadow type="math_number">
            <field name="NUM">15</field>
          </shadow>
        </value>
      </block>

      <block type="arduino_dfplayer_mini_volume_up_down">
      </block>
      <block type="arduino_dfplayer_mini_EQ">
        <field name="dfplayer_name">myPlayer</field>
        <value name="eq_data">
          <shadow type="math_number">
            <field name="NUM">0</field>
          </shadow>
          <block type="arduino_dfplayer_mini_EQ_type">
            <field name="eq_type">DFPLAYER_EQ_NORMAL</field>
          </block>
        </value>
      </block>
      <block type="arduino_dfplayer_mini_outputDevice">
        <field name="dfplayer_name">myPlayer</field>
        <value name="outputdevice_data">
          <shadow type="math_number">
            <field name="NUM">2</field>
          </shadow>
          <block type="arduino_dfplayer_mini_outputDevice_type">
            <field name="outputdevice_type">DFPLAYER_DEVICE_SD</field>
          </block>
        </value>
      </block>
      <block type="arduino_dfplayer_set_1">
      </block>
      <block type="arduino_dfplayer_play_loop">
        <value name="play_data">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
      </block>
      <block type="arduino_dfplayer_playFolder">
        <value name="fold_data">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
        <value name="play_data">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
      </block>
      <block type="arduino_dfplayer_loopFolder">
        <value name="fold_data">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
      </block>
      <block type="arduino_dfplayer_read_now">
      </block>
      <block type="arduino_dfplayer_readFileCounts">
        <field name="dfplayer_name">myPlayer</field>
        <field name="play_data">readFileCounts</field>
        <value name="device_type">
          <shadow type="math_number">
            <field name="NUM">2</field>
          </shadow>
          <block type="arduino_dfplayer_mini_outputDevice_type">
            <field name="outputdevice_type">DFPLAYER_DEVICE_SD</field>
          </block>
        </value>
      </block>
      <block type="arduino_dfplayer_readFileCountsInFolder">
        <value name="folder_data">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
      </block>
      <block type="arduino_dfplayer_available">
      </block>
    </category>
    <category id="catMonitor" colour="180">
      <category id="cat4Digitdisplay" colour="180">
        <block type="display_TM1637_init_32">
        </block>
        <block type="display_TM1637_Brightness_32">
          <value name="Brightness">
            <shadow type="math_number">
              <field name="NUM">7</field>
            </shadow>
          </value>
        </block>
        <block type="display_TM1637_clearDisplay_32"></block>
        <block type="display_TM1637_displyPrint_32">
          <value name="VALUE">
            <shadow type="text">
              <field name="TEXT">2345</field>
            </shadow>
          </value>
          <value name="Speed">
            <shadow type="math_number">
              <field name="NUM">300</field>
            </shadow>
          </value>
        </block>
        <block type="display_TM1637_displayTime_32">
          <value name="hour">
            <shadow type="math_number">
              <field name="NUM">12</field>
            </shadow>
          </value>
          <value name="minute">
            <shadow type="math_number">
              <field name="NUM">30</field>
            </shadow>
          </value>
          <value name="STAT">
            <shadow type="inout_highlow">
            </shadow>
          </value>
        </block>
      </category>
      <category id="catLCD" colour="180">
        <block type="group_lcd_init2">
          <value name="device">
            <shadow type="math_number">
              <field name="NUM">0x27</field>
            </shadow>
          </value>
        </block>
        <block type="group_lcd_init3">
          <field name="RS">2</field>
          <field name="EN">4</field>
          <field name="D4">5</field>
          <field name="D5">12</field>
          <field name="D6">13</field>
          <field name="D7">14</field>
        </block>
        <block type="group_lcd_print">
          <value name="TEXT">
            <block type="text">
              <field name="TEXT"></field>
            </block>
          </value>
          <value name="TEXT2">
            <block type="text">
              <field name="TEXT"></field>
            </block>
          </value>
        </block>
        <block type="group_lcd_print2">
          <value name="row">
            <shadow type="math_number">
              <field name="NUM">1</field>
            </shadow>
          </value>
          <value name="column">
            <shadow type="math_number">
              <field name="NUM">1</field>
            </shadow>
          </value>
          <value name="TEXT">
            <block type="text">
              <field name="TEXT"></field>
            </block>
          </value>
        </block>
        <block type="lcd_display_pattern">
          <field name="name">mylcd</field>
          <field name="number">0</field>
          <value name="row">
            <shadow type="math_number">
              <field name=" NUM">1</field>
            </shadow>
          </value>
          <value name="column">
            <shadow type="math_number">
              <field name="NUM">1</field>
            </shadow>
          </value>
          <value name="pattern">
            <block type="lcd_pattern">
              <field name="VAR">lcd</field>
              <field name="a81">FALSE</field>
              <field name="a82">FALSE</field>
              <field name="a83">FALSE</field>
              <field name="a84">FALSE</field>
              <field name="a85">FALSE</field>
              <field name="a71">FALSE</field>
              <field name="a72">TRUE</field>
              <field name="a73">TRUE</field>
              <field name="a74">TRUE</field>
              <field name="a75">FALSE</field>
              <field name="a61">TRUE</field>
              <field name="a62">FALSE</field>
              <field name="a63">FALSE</field>
              <field name="a64">FALSE</field>
              <field name="a65">TRUE</field>
              <field name="a51">TRUE</field>
              <field name="a52">FALSE</field>
              <field name="a53">TRUE</field>
              <field name="a54">FALSE</field>
              <field name="a55">TRUE</field>
              <field name="a41">TRUE</field>
              <field name="a42">FALSE</field>
              <field name="a43">TRUE</field>
              <field name="a44">FALSE</field>
              <field name="a45">TRUE</field>
              <field name="a31">TRUE</field>
              <field name="a32">FALSE</field>
              <field name="a33">FALSE</field>
              <field name="a34">FALSE</field>
              <field name="a35">TRUE</field>
              <field name="a21">FALSE</field>
              <field name="a22">TRUE</field>
              <field name="a23">TRUE</field>
              <field name="a24">TRUE</field>
              <field name="a25">FALSE</field>
              <field name="a11">FALSE</field>
              <field name="a12">FALSE</field>
              <field name="a13">FALSE</field>
              <field name="a14">FALSE</field>
              <field name="a15">FALSE</field>
            </block>
          </value>
        </block>
        <block type="group_lcd_power">
          <field name="STAT">clear</field>
        </block>
      </category>
      <category id="catOLED" colour="180">
        <block type="oled_init">
          <value name="ADDRESS">
            <shadow type="math_number">
              <field name="NUM">0x3C</field>
            </shadow>
          </value>
          <next>
            <block type="oled_page">
              <statement name="DO">
                <block type="procedures_callnoreturn">
                  <mutation name="page1"></mutation>
                </block>
              </statement>
            </block>
          </next>
        </block>
        <block type="u8g2_spi_init">
          <field name="U8G2_TYPE_SPI">SSD1306_128X64_NONAME</field>
          <field name="ROTATION">U8G2_R0</field>
          <field name="CS">10</field>
          <field name="DC">9</field>
          <field name="RST">8</field>
          <next>
            <block type="oled_page">
              <statement name="DO">
                <block type="procedures_callnoreturn">
                  <mutation name="page1"></mutation>
                </block>
              </statement>
            </block>
          </next>
        </block>
        <block type="u8g2_LCD12864_spi_init">
          <field name="ROTATION">U8G2_R0</field>
          <value name="CLK">
            <shadow type="pins_SCK">
            </shadow>
          </value>
          <value name="MOSI">
            <shadow type="pins_MOSI">
            </shadow>
          </value>
          <field name="DC">10</field>
          <next>
            <block type="oled_page">
              <statement name="DO">
                <block type="procedures_callnoreturn">
                  <mutation name="page1"></mutation>
                </block>
              </statement>
            </block>
          </next>
        </block>
        <block type="u8g2_LCD12864_8080_init">
          <field name="ROTATION">U8G2_R0</field>
          <field name="DB0">2</field>
          <field name="DB1">3</field>
          <field name="DB2">4</field>
          <field name="DB3">5</field>
          <field name="DB4">6</field>
          <field name="DB5">7</field>
          <field name="DB6">8</field>
          <field name="DB7">9</field>
          <field name="ENABLE">10</field>
          <field name="DC">11</field>
          <next>
            <block type="oled_page">
              <statement name="DO">
                <block type="procedures_callnoreturn">
                  <mutation name="page1"></mutation>
                </block>
              </statement>
            </block>
          </next>
        </block>

        <sep gap="50"></sep>

        <block type="oled_set_EN_Font">
        </block>
        <block type="oled_set_CN_Font">
        </block>
        <block type="procedures_defnoreturn">
          <field name="NAME">page1</field>
          <statement name="STACK">
            <block type="oled_set_EN_Font">
              <field name="TYPE">timR08_tr</field>
              <next>
                <block type="oled_print">
                  <value name="POS_X">
                    <shadow type="math_number">
                      <field name="NUM">0</field>
                    </shadow>
                  </value>
                  <value name="POS_Y">
                    <shadow type="math_number">
                      <field name="NUM">20</field>
                    </shadow>
                  </value>
                  <value name="TEXT">
                    <shadow type="text">
                      <field name="TEXT">1234</field>
                    </shadow>
                  </value>
                </block>
              </next>
            </block>
          </statement>
        </block>
        <!-- <block type="oled_define_bitmap_data"></block> -->
        <block type="tool_modulus_show">
          <field name="VAR">bitmap</field>
          <field name="x">96</field>
          <field name="save_hz">TRUE</field>
          <value name="input_data">
            <block type="tool_modulus">
              <field name="bitmap_formats">1</field>
              <field name="modulus_way">2</field>
              <field name="modulus_direction">2</field>
              <field name="hz_sharp">STHeiti</field>
              <field name="hz_line_height">16</field>
              <field name="hz_up_down">hz_up</field>
              <field name="hz_up_down_data">0</field>
              <field name="hz_left_right">hz_left</field>
              <field name="hz_left_right_data">0</field>
              <field name="bitmap_width">48</field>
              <field name="bitmap_height">16</field>
              <field name="show_hz">TRUE</field>
              <field name="input_data">米思齐</field>
            </block>
          </value>
        </block>
        <block type="oled_showBitmap">
          <value name="START_X">
            <shadow type="math_number">
              <field name="NUM">0</field>
            </shadow>
          </value>
          <value name="START_Y">
            <shadow type="math_number">
              <field name="NUM">0</field>
            </shadow>
          </value>
          <value name="WIDTH">
            <shadow type="math_number">
              <field name="NUM">128</field>
            </shadow>
          </value>
          <value name="HEIGHT">
            <shadow type="math_number">
              <field name="NUM">64</field>
            </shadow>
          </value>
          <value name="bitmap_name">
            <block type="text">
              <field name="TEXT">bitmap1</field>
            </block>
          </value>
        </block>
        <block type="oled_clear"></block>
        <block type="u8g2_setContrast">
          <value name="Contrast">
            <shadow type="math_number">
              <field name="NUM">100</field>
            </shadow>
          </value>
        </block>
        <block type="oled_face">
          <value name="POS_X">
            <shadow type="math_number">
              <field name="NUM">20</field>
            </shadow>
          </value>
          <value name="POS_Y">
            <shadow type="math_number">
              <field name="NUM">0</field>
            </shadow>
          </value>
          <field name="Icon_size"></field>
        </block>
        <block type="oled_icons">
          <value name="POS_X">
            <shadow type="math_number">
              <field name="NUM">0</field>
            </shadow>
          </value>
          <value name="POS_Y">
            <shadow type="math_number">
              <field name="NUM">20</field>
            </shadow>
          </value>
          <field name="Icon_size"></field>
        </block>
        <block type="oled_drawPixel">
          <value name="POS_X">
            <shadow type="math_number">
              <field name="NUM">64</field>
            </shadow>
          </value>
          <value name="POS_Y">
            <shadow type="math_number">
              <field name="NUM">32</field>
            </shadow>
          </value>
        </block>
        <block type="oled_drawLine">
          <value name="START_X">
            <shadow type="math_number">
              <field name="NUM">1</field>
            </shadow>
          </value>
          <value name="START_Y">
            <shadow type="math_number">
              <field name="NUM">1</field>
            </shadow>
          </value>
          <value name="END_X">
            <shadow type="math_number">
              <field name="NUM">15</field>
            </shadow>
          </value>
          <value name="END_Y">
            <shadow type="math_number">
              <field name="NUM">20</field>
            </shadow>
          </value>
        </block>
        <block type="oled_draw_Str_Line">
          <value name="START_X">
            <shadow type="math_number">
              <field name="NUM">1</field>
            </shadow>
          </value>
          <value name="START_Y">
            <shadow type="math_number">
              <field name="NUM">1</field>
            </shadow>
          </value>
          <value name="LENGTH">
            <shadow type="math_number">
              <field name="NUM">30</field>
            </shadow>
          </value>
        </block>
        <block type="oled_drawFrame">
          <value name="D0_X">
            <shadow type="math_number">
              <field name="NUM">1</field>
            </shadow>
          </value>
          <value name="D0_Y">
            <shadow type="math_number">
              <field name="NUM">1</field>
            </shadow>
          </value>
          <value name="WIDTH">
            <shadow type="math_number">
              <field name="NUM">10</field>
            </shadow>
          </value>
          <value name="HEIGHT">
            <shadow type="math_number">
              <field name="NUM">20</field>
            </shadow>
          </value>
        </block>
        <block type="oled_drawRFrame">
          <value name="D0_X">
            <shadow type="math_number">
              <field name="NUM">1</field>
            </shadow>
          </value>
          <value name="D0_Y">
            <shadow type="math_number">
              <field name="NUM">1</field>
            </shadow>
          </value>
          <value name="WIDTH">
            <shadow type="math_number">
              <field name="NUM">10</field>
            </shadow>
          </value>
          <value name="HEIGHT">
            <shadow type="math_number">
              <field name="NUM">20</field>
            </shadow>
          </value>
          <value name="RADIUS">
            <shadow type="math_number">
              <field name="NUM">3</field>
            </shadow>
          </value>
        </block>
        <block type="oled_drawCircle">
          <value name="D0_X">
            <shadow type="math_number">
              <field name="NUM">30</field>
            </shadow>
          </value>
          <value name="D0_Y">
            <shadow type="math_number">
              <field name="NUM">30</field>
            </shadow>
          </value>
          <value name="RADIUS">
            <shadow type="math_number">
              <field name="NUM">6</field>
            </shadow>
          </value>
        </block>
        <block type="oled_drawEllipse">
          <value name="D0_X">
            <shadow type="math_number">
              <field name="NUM">30</field>
            </shadow>
          </value>
          <value name="D0_Y">
            <shadow type="math_number">
              <field name="NUM">30</field>
            </shadow>
          </value>
          <value name="RADIUS_X">
            <shadow type="math_number">
              <field name="NUM">6</field>
            </shadow>
          </value>
          <value name="RADIUS_Y">
            <shadow type="math_number">
              <field name="NUM">15</field>
            </shadow>
          </value>
        </block>
        <block type="oled_drawTriangle">
          <value name="D0_X">
            <shadow type="math_number">
              <field name="NUM">14</field>
            </shadow>
          </value>
          <value name="D0_Y">
            <shadow type="math_number">
              <field name="NUM">55</field>
            </shadow>
          </value>
          <value name="D1_X">
            <shadow type="math_number">
              <field name="NUM">45</field>
            </shadow>
          </value>
          <value name="D1_Y">
            <shadow type="math_number">
              <field name="NUM">33</field>
            </shadow>
          </value>
          <value name="D2_X">
            <shadow type="math_number">
              <field name="NUM">8</field>
            </shadow>
          </value>
          <value name="D2_Y">
            <shadow type="math_number">
              <field name="NUM">43</field>
            </shadow>
          </value>
        </block>
      </category>
      <category id="catMatrix" colour="180">
        <block type="MAX7219_init">
          <value name="PIN1">
            <shadow type="pins_MOSI">
            </shadow>
          </value>
          <value name="PIN2">
            <shadow type="pins_digital">
              <field name="PIN">9</field>
            </shadow>
          </value>
          <value name="PIN3">
            <shadow type="pins_SCK">
            </shadow>
          </value>
          <value name="hDisplays">
            <shadow type="math_number">
              <field name="NUM">1</field>
            </shadow>
          </value>
          <value name="vDisplays">
            <shadow type="math_number">
              <field name="NUM">1</field>
            </shadow>
          </value>
        </block>
        <block type="display_Matrix_DrawPixel">
          <value name="XVALUE">
            <shadow type="math_number">
              <field name="NUM">1</field>
            </shadow>
          </value>
          <value name="YVALUE">
            <shadow type="math_number">
              <field name="NUM">1</field>
            </shadow>
          </value>
          <value name="STAT">
            <shadow type="inout_highlow"></shadow>
          </value>
        </block>
        <block type="display_Max7219_Rotation">
          <value name="NO">
            <shadow type="math_number">
              <field name="NUM">1</field>
            </shadow>
          </value>
        </block>
        <block type="display_Max7219_setPosition">
          <value name="NO">
            <shadow type="math_number">
              <field name="NUM">1</field>
            </shadow>
          </value>
          <value name="X">
            <shadow type="math_number">
              <field name="NUM">1</field>
            </shadow>
          </value>
          <value name="Y">
            <shadow type="math_number">
              <field name="NUM">1</field>
            </shadow>
          </value>
        </block>
        <block type="display_Matrix_TEXT">
          <value name="TEXT">
            <shadow type="text">
              <field name="TEXT">Mixly</field>
            </shadow>
          </value>
          <value name="Speed">
            <shadow type="math_number">
              <field name="NUM">300</field>
            </shadow>
          </value>
        </block>
        <block type="display_Matrix_DisplayChar">
          <value name="NO">
            <shadow type="math_number">
              <field name="NUM">0</field>
            </shadow>
          </value>
          <value name="LEDArray">
            <block type="display_Matrix_LedArray"></block>
          </value>
        </block>
        <block type="Matrix_img">
        </block>
        <block type="display_Matrix_fillScreen">
        </block>
        <block type="display_Matrix_Brightness">
          <value name="Brightness">
            <shadow type="math_number">
              <field name="NUM">5</field>
            </shadow>
          </value>
        </block>
      </category>
    </category>
    <category id="catGroup" colour="140">
        <block type="ir_recv">
          <field name="VAR">ir_item</field>
          <value name="PIN">
            <shadow type="pins_digital">
              <field name="PIN">0</field>
            </shadow>
          </value>
          <statement name="DO">
            <block type="serial_print_num">
              <field name="serial_select">Serial</field>
              <field name="new_line">println</field>
              <field name="STAT">HEX</field>
              <value name="CONTENT">
                <block type="variables_get">
                  <field name="VAR">ir_item</field>
                </block>
              </value>
            </block>
          </statement>
        </block>      
      <block type="serialBT_Init">
        <value name="CONTENT">
          <shadow type="text">
            <field name="TEXT">ESP32BT</field>
          </shadow>
        </value>
        <next>
          <block type="serial_begin">
            <field name="serial_select">Serial</field>
            <value name="CONTENT">
              <shadow type="math_number">
                <field name="NUM">115200</field>
              </shadow>
            </value>
            <next>
              <block type="controls_if">
                <value name="IF0">
                  <block type="serialBT_available">
                  </block>
                </value>
                <statement name="DO0">
                  <block type="serial_write">
                    <field name="serial_select">Serial</field>
                    <value name="CONTENT">
                      <block type="serialBT_read">
                      </block>
                    </value>
                  </block>
                </statement>
                <next>
                  <block type="controls_if">
                    <value name="IF0">
                      <block type="serial_available">
                        <field name="serial_select">Serial</field>
                      </block>
                    </value>
                    <statement name="DO0">
                      <block type="serialBT_write">
                        <value name="CONTENT">
                          <block type="serial_parseInt_Float">
                            <field name="serial_select">Serial</field>
                            <field name="STAT">read</field>
                          </block>
                        </value>
                      </block>
                    </statement>
                    <next>
                      <block type="controls_delay">
                        <field name="UNIT">delay</field>
                        <value name="DELAY_TIME">
                          <shadow type="math_number">
                            <field name="NUM">20</field>
                          </shadow>
                        </value>
                      </block>
                    </next>
                  </block>
                </next>
              </block>
            </next>
          </block>
        </next>
      </block>
      <block type="i2c_master_writer"></block>
      <block type="i2c_master_reader"></block>
      <block type="i2c_slave_onreceive">
        <value name="onReceive_length">
          <shadow type="variables_get">
            <field name="VAR">item</field>
          </shadow>
        </value>
      </block>
      <block type="i2c_master_reader2"></block>
      <block type="i2c_available"></block>
      <block type="i2c_howmany"></block>
      <block type="i2c_slave_onrequest">
        <value name="device">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
      </block>
      <block type="i2c_slave_write">
        <value name="value">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
      </block>
      <block type="i2c_slave_write_array">
        <value name="array">
          <shadow type="math_number">
            <field name="NUM">array</field>
          </shadow>
        </value>
        <value name="length">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
      </block>
      <!--   
      <block type="spi_transfer">
        <value name="pin">
          <shadow type="pins_digital"></shadow>
        </value>
        <value name="value">
          <shadow type="math_number">
            <field name="NUM">0</field>
          </shadow>
        </value>
      </block> 
      -->
      <block type="MFRC522_init">
        <value name="PIN_SDA">
          <shadow type="pins_digital">
            <field name="PIN">0</field>
          </shadow>
        </value>
        <value name="PIN_SCK">
          <shadow type="pins_SCK">
          </shadow>
        </value>
        <value name="PIN_MISO">
          <shadow type="pins_MISO">
          </shadow>
        </value>
        <value name="PIN_MOSI">
          <shadow type="pins_MOSI">
          </shadow>
        </value>
        <value name="PIN_RST">
          <shadow type="pins_digital">
            <field name="PIN">2</field>
          </shadow>
        </value>
      </block>
      <block type="MFRC522_IsNewCard">
      </block>
      <block type="MFRC522_ReadCardUID">
      </block>
      <block type="MFRC522_WriteCard">
        <value name="block">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
        <value name="buffer">
          <shadow type="math_number">
            <field name="NUM">mylist</field>
          </shadow>
        </value>
        <value name="length">
          <shadow type="math_number">
            <field name="NUM">16</field>
          </shadow>
        </value>
      </block>
      <block type="MFRC522_ReadCard">
        <value name="block">
          <shadow type="math_number">
            <field name="NUM">1</field>
          </shadow>
        </value>
        <value name="buffer">
          <shadow type="math_number">
            <field name="NUM">mylist</field>
          </shadow>
        </value>
        <value name="length">
          <shadow type="math_number">
            <field name="NUM">16</field>
          </shadow>
        </value>
      </block>
    </category>
    <category id="catStorage" colour="0">
      <category id="catStorageSD" colour="0">
        <block type="store_sd_init">
          <value name="PIN_MOSI">
            <shadow type="pins_MOSI">
            </shadow>
          </value>
          <value name="PIN_MISO">
            <shadow type="pins_MISO">
            </shadow>
          </value>
          <value name="PIN_SCK">
            <shadow type="pins_SCK">
            </shadow>
          </value>
          <value name="PIN_CS">
            <shadow type="pins_digital">
            </shadow>
          </value>
        </block>
        <block type="sd_card_type"> </block>
        <block type="sd_card_root_files"> </block>
        <block type="sd_volume"></block>
        <block type="sd_exist"> </block>
        <block type="sd_DelFile"> </block>
        <block type="sd_read"> </block>
        <block type="store_sd_write">
          <field name="FILE">fileName.txt</field>
          <value name="DATA">
            <shadow type="text">
              <field name="TEXT">hello world</field>
            </shadow>
          </value>
          <value name="NEWLINE">
            <shadow type="logic_boolean">
              <field name="BOOL">TRUE</field>
            </shadow>
          </value>
        </block>
      </category>
      <category id="catStorageSPIFFS" colour="0">
        <block type="initialize_spiffs">
        </block>
        <block type="spiffs_open_file">
          <value name="file_var">
            <shadow type="text">
              <field name="TEXT">myFile</field>
            </shadow>
          </value>
          <value name="file_path">
            <shadow type="text">
              <field name="TEXT">/fileName.txt</field>
            </shadow>
          </value>
        </block>
        <block type="spiffs_close_file">
          <value name="file_var">
            <shadow type="text">
              <field name="TEXT">myFile</field>
            </shadow>
          </value>
        </block>
        <block type="spiffs_write_data">
          <value name="data">
            <shadow type="text">
              <field name="TEXT">hello</field>
            </shadow>
          </value>
        </block>
        <block type="spiffs_read_available">
          <value name="file_var">
            <shadow type="text">
              <field name="TEXT">myFile</field>
            </shadow>
          </value>
        </block>
        <block type="spiffs_read_data">
          <value name="file_var">
            <shadow type="text">
              <field name="TEXT">myFile</field>
            </shadow>
          </value>
        </block>
        <block type="spiffs_file_size">
          <value name="file_var">
            <shadow type="text">
              <field name="TEXT">myFile</field>
            </shadow>
          </value>
        </block>
        <block type="spiffs_delete_file">
          <value name="file_path">
            <shadow type="text">
              <field name="TEXT">/fileName.txt</field>
            </shadow>
          </value>
        </block>
      </category>
      <category id="catStorageEEPROM" colour="0">
        <block type="store_eeprom_put">
          <value name="ADDRESS">
            <shadow type="math_number">
              <field name="NUM">0</field>
            </shadow>
          </value>
          <value name="DATA">
            <shadow type="math_number">
              <field name="NUM">0</field>
            </shadow>
          </value>
        </block>
        <block type="store_eeprom_get">
          <value name="ADDRESS">
            <shadow type="math_number">
              <field name="NUM">0</field>
            </shadow>
          </value>
          <value name="DATA">
            <shadow type="math_number">
              <field name="NUM">item</field>
            </shadow>
          </value>
        </block>
      </category>
    </category>
    <category id="catNetwork" colour="0">
      <category id="catWIFI" colour="0">
        <block type="WIFI_info">
          <value name="SSID">
            <shadow type="text">
              <field name="TEXT">ssid</field>
            </shadow>
          </value>
          <value name="PWD">
            <shadow type="text">
              <field name="TEXT">password</field>
            </shadow>
          </value>
        </block>
        <block type="network_wifi_connect">
        </block>
        <block type="network_get_connect">
        </block>
        <block type="NTP_server">
          <value name="server_add">
            <shadow type="text">
              <field name="TEXT">ntp1.aliyun.com</field>
            </shadow>
          </value>
          <value name="timeZone">
            <shadow type="math_number">
              <field name="NUM">8</field>
            </shadow>
          </value>
          <value name="Interval">
            <shadow type="math_number">
              <field name="NUM">600</field>
            </shadow>
          </value>
        </block>
        <block type="NTP_server_get_time"></block>
        <block type="esp_now_send">
          <value name="mac">
            <block type="text">
              <field name="TEXT">30:AE:A4:58:9D:7C</field>
            </block>
          </value>
          <value name="data">
            <block type="text_join">
              <value name="A">
                <shadow type="text">
                  <field name="TEXT">random_</field>
                </shadow>
              </value>
              <value name="B">
                <shadow type="text">
                  <field name="TEXT">Mixly</field>
                </shadow>
                <block type="math_random_int">
                  <value name="FROM">
                    <shadow type="math_number">
                      <field name="NUM">1</field>
                    </shadow>
                  </value>
                  <value name="TO">
                    <shadow type="math_number">
                      <field name="NUM">100</field>
                    </shadow>
                  </value>
                </block>
              </value>
            </block>
          </value>
          <statement name="success">
            <block type="serial_println">
              <field name="serial_select">Serial</field>
              <value name="CONTENT">
                <block type="text">
                  <field name="TEXT">Sent with success</field>
                </block>
              </value>
            </block>
          </statement>
          <statement name="failure">
            <block type="serial_println">
              <field name="serial_select">Serial</field>
              <value name="CONTENT">
                <block type="text">
                  <field name="TEXT">Error sending the data</field>
                </block>
              </value>
            </block>
          </statement>
        </block>
        <block type="esp_now_receive">
          <statement name="receive_data">
            <block type="serial_println">
              <field name="serial_select">Serial</field>
              <value name="CONTENT">
                <block type="variables_get">
                  <field name="VAR">mydata</field>
                </block>
              </value>
            </block>
          </statement>
        </block>
        <block type="http_get">
          <value name="api">
            <shadow type="math_number">
              <field name="NUM">http://jsonplaceholder.typicode.com/users/1</field>
            </shadow>
            <block type="text">
              <field name="TEXT">http://jsonplaceholder.typicode.com/posts/1</field>
            </block>
          </value>
          <statement name="success">
            <block type="serial_println">
              <field name="serial_select">Serial</field>
              <value name="CONTENT">
                <block type="variables_get">
                  <field name="VAR">Request_result</field>
                </block>
              </value>
            </block>
          </statement>
          <statement name="failure">
            <block type="serial_println">
              <field name="serial_select">Serial</field>
              <value name="CONTENT">
                <block type="text">
                  <field name="TEXT">Invalid response!</field>
                </block>
              </value>
            </block>
          </statement>
        </block>
      </category>
      <category id="catBlynk" name="catBlynk" colour="160">
        <block type="blynk_server">
          <value name="server_add">
            <shadow type="text">
              <field name="TEXT">blynk.mixly.org</field>
            </shadow>
          </value>
          <value name="auth_key">
            <shadow type="text">
              <field name="TEXT">d9efdd0413ec4b74ab0057a0b8675654</field>n
            </shadow>
          </value>
          <value name="wifi_ssid">
            <shadow type="text">
              <field name="TEXT">wifi-ssid</field>
            </shadow>
          </value>
          <value name="wifi_pass">
            <shadow type="text">
              <field name="TEXT">wifi-pass</field>
            </shadow>
          </value>
        </block>

        <block type="Blynk_connect_state"></block>
        <block type="blynk_smartconfig">
          <value name="server_add">
            <shadow type="text">
              <field name="TEXT">blynk.mixly.org</field>
            </shadow>
          </value>
          <value name="auth_key">
            <shadow type="text">
              <field name="TEXT">d9efdd0413ec4b74ab0057a0b8675654</field>
            </shadow>
          </value>
        </block>

        <block type="blynk_esp32_ble">
          <value name="auth">
            <shadow type="text">
              <field name="TEXT">59d948d79fe642aab95c1577b1ad419d</field>
            </shadow>
          </value>
          <value name="name">
            <shadow type="text">
              <field name="TEXT">Blynk</field>
            </shadow>
          </value>
        </block>
        <!-- ESP32 blynk Bluetooth连接方式 -->
        <block type="blynk_esp32_Bluetooth">
          <value name="auth">
            <shadow type="text">
              <field name="TEXT">59d948d79fe642aab95c1577b1ad419d</field>
            </shadow>
          </value>
          <value name="name">
            <shadow type="text">
              <field name="TEXT">Blynk</field>
            </shadow>
          </value>
        </block>
        <block type="blynk_iot_get_data">
          <mutation>
            <arg name="vpin_value" vartype="int"></arg>
          </mutation>
          <field name="Vpin">V0</field>
          <statement name="STACK">
            <block type="serial_println">
              <field name="serial_select">Serial</field>
              <value name="CONTENT">
                <block type="variables_get">
                  <field name="VAR">vpin_value</field>
                </block>
              </value>
            </block>
          </statement>
        </block>
        <block type="Blynk_iot_timer">
          <mutation>
            <arg name="vpin_value" vartype="int"></arg>
          </mutation>
          <field name="Vpin">V0</field>
          <value name="TIME">
            <shadow type="math_number">
              <field name="NUM">1000</field>
            </shadow>
          </value>
          <statement name="DO">
            <block type="blynk_iot_push_data">
              <field name="Vpin">V0</field>
              <value name="data">
                <shadow type="math_number">
                  <field name="NUM">0</field>
                </shadow>
              </value>
            </block>
          </statement>
        </block>
        <block type="blynk_iot_WidgetLED_COLOR">
          <value name="COLOR">
            <shadow type="math_number">
              <field name="NUM">
              </field>
            </shadow>
            <block type="RGB_color_seclet">
              <field name="COLOR">#ff0000</field>
            </block>
          </value>
          <value name="STAT">
            <shadow type="inout_highlow"></shadow>
          </value>
        </block>
        <block type="blynk_iot_WidgetLED_VALUE">
          <value name="NUM">
            <shadow type="math_number">
              <field name="NUM">0</field>
            </shadow>
          </value>
          <value name="COLOR">
            <shadow type="math_number">
              <field name="NUM">
              </field>
            </shadow>
            <block type="RGB_color_seclet">
              <field name="COLOR">#ff0000</field>
            </block>
          </value>
        </block>
        <block type="blynk_email">
          <value name="email_add">
            <shadow type="text">
              <field name="TEXT">example@blynk.cc</field>
            </shadow>
          </value>
          <value name="Subject">
            <shadow type="text">
              <field name="TEXT">Subject</field>
            </shadow>
          </value>
          <value name="content">
            <shadow type="text">
              <field name="TEXT">Content</field>
            </shadow>
          </value>
        </block>
        <block type="blynk_notify">
          <value name="content">
            <shadow type="text">
              <field name="TEXT">Notify</field>
            </shadow>
          </value>
        </block>
        <block type="blynk_iot_terminal_get">
          <field name="Vpin">V0</field>
          <statement name="DO">
            <block type="serial_println">
              <field name="serial_select">Serial</field>
              <value name="CONTENT">
                <block type="variables_get">
                  <field name="VAR">terminal_text</field>
                </block>
              </value>
            </block>
          </statement>
        </block>
        <block type="blynk_terminal_clear">
        </block>
        <block type="blynk_terminal">
          <value name="content">
            <shadow type="text">
              <field name="TEXT">Hello,World!</field>
            </shadow>
          </value>
        </block>
        <block type="blynk_time_input_1">
          <field name="Vpin">V0</field>
          <statement name="DO">
            <block type="serial_println">
              <field name="serial_select">Serial</field>
              <value name="CONTENT">
                <block type="variables_get">
                  <field name="VAR">hour</field>
                </block>
              </value>
              <next>
                <block type="serial_println">
                  <field name="serial_select">Serial</field>
                  <value name="CONTENT">
                    <block type="variables_get">
                      <field name="VAR">minute</field>
                    </block>
                  </value>
                  <next>
                    <block type="serial_println">
                      <field name="serial_select">Serial</field>
                      <value name="CONTENT">
                        <block type="variables_get">
                          <field name="VAR">second</field>
                        </block>
                      </value>
                      <next>
                      </next>
                    </block>
                  </next>
                </block>
              </next>
            </block>
          </statement>
        </block>
        <block type="blynk_lcd">
          <field name="Vpin">V0</field>
          <value name="x">
            <shadow type="math_number">
              <field name="NUM">0</field>
            </shadow>
          </value>
          <value name="y">
            <shadow type="math_number">
              <field name="NUM">0</field>
            </shadow>
          </value>
          <value name="value">
            <shadow type="math_number">
              <field name="NUM">923</field>
            </shadow>
          </value>
        </block>
        <block type="blynk_lcd_clear">
        </block>
        <block type="blynk_videourl">
          <value name="url">
            <shadow type="text">
              <field name="TEXT">http://yourvideostream.url</field>
            </shadow>
          </value>
        </block>
        <block type="blynk_table_add_data">
          <value name="name">
            <shadow type="text">
              <field name="TEXT">Test row</field>
            </shadow>
          </value>
          <value name="data">
            <shadow type="text">
              <field name="TEXT">hello</field>
            </shadow>
          </value>
        </block>

        <block type="blynk_table_click">
          <field name="Vpin">V0</field>
          <statement name="function">
            <block type="serial_println">
              <field name="serial_select">Serial</field>
              <value name="CONTENT">
                <block type="variables_get">
                  <field name="VAR">index</field>
                </block>
              </value>
              <next>
                <block type="serial_println">
                  <field name="serial_select">Serial</field>
                  <value name="CONTENT">
                    <block type="variables_get">
                      <field name="VAR">selected</field>
                    </block>
                  </value>
                </block>
              </next>
            </block>
          </statement>
        </block>

        <block type="blynk_table_order">
          <field name="Vpin">V0</field>
          <statement name="function">
            <block type="serial_println">
              <field name="serial_select">Serial</field>
              <value name="CONTENT">
                <block type="variables_get">
                  <field name="VAR">indexFrom</field>
                </block>
              </value>
              <next>
                <block type="serial_println">
                  <field name="serial_select">Serial</field>
                  <value name="CONTENT">
                    <block type="variables_get">
                      <field name="VAR">indexTo</field>
                    </block>
                  </value>
                </block>
              </next>
            </block>
          </statement>
        </block>
        <block type="blynk_table">
          <value name="id">
            <shadow type="math_number">
              <field name="NUM">0</field>
            </shadow>
          </value>
          <value name="mingcheng">
            <shadow type="text">
              <field name="TEXT">Name</field>
            </shadow>
          </value>
          <value name="shujv">
            <shadow type="text">
              <field name="TEXT">John</field>
            </shadow>
          </value>
        </block>
        <block type="blynk_table_update">
          <value name="id">
            <shadow type="math_number">
              <field name="NUM">0</field>
            </shadow>
          </value>
          <value name="mingcheng">
            <shadow type="text">
              <field name="TEXT">Name</field>
            </shadow>
          </value>
          <value name="shujv">
            <shadow type="text">
              <field name="TEXT">John</field>
            </shadow>
          </value>
        </block>
        <block type="blynk_table_highlight">
          <value name="id">
            <shadow type="math_number">
              <field name="NUM">0</field>
            </shadow>
          </value>
        </block>
        <block type="blynk_table_select">
          <value name="id">
            <shadow type="math_number">
              <field name="NUM">0</field>
            </shadow>
          </value>
        </block>
        <block type="blynk_table_unselect">
          <value name="id">
            <shadow type="math_number">
              <field name="NUM">0</field>
            </shadow>
          </value>
        </block>
        <block type="blynk_table_cleardata"></block>
        <block type="Blynk_iot_CONNECT_STATE">
          <field name="state">BLYNK_CONNECTED</field>
          <statement name="DO">
            <block type="blynk_bridge_auth">
              <field name="Vpin">V0</field>
              <value name="auth">
                <shadow type="text">
                  <field name="TEXT">n2KlfPGDyjDBluNi1G9DG5OEjqDT996L</field>
                </shadow>
              </value>
            </block>
          </statement>
        </block>
        <block type="blynk_bridge_digitalWrite">
          <value name="PIN">
            <shadow type="pins_digital"></shadow>
          </value>
          <value name="STAT">
            <shadow type="inout_highlow"></shadow>
          </value>
        </block>
        <block type="blynk_bridge_AnaloglWrite">
          <value name="PIN">
            <shadow type="pins_pwm"></shadow>
          </value>
          <value name="NUM">
            <shadow type="math_number">
              <field name="NUM">0</field>
            </shadow>
          </value>
        </block>
        <block type="blynk_bridge_VPin">
          <value name="NUM">
            <shadow type="math_number">
              <field name="NUM">0</field>
            </shadow>
          </value>
        </block>
        <block type="Blynk_iot_CONNECT_STATE">
          <field name="state">BLYNK_CONNECTED</field>
          <statement name="DO">
            <block type="blynk_WidgetRTC_init">
              <value name="NUM">
                <shadow type="math_number">
                  <field name="NUM">10</field>
                </shadow>
              </value>
            </block>
          </statement>
        </block>
        <block type="blynk_WidgetRTC_get_time">
        </block>
        <block type="blynk_iot_playmusic">
          <field name="Vpin">V0</field>
          <statement name="DO">
            <block type="variables_declare">
              <field name="VAR">action</field>
              <field name="TYPE">String</field>
              <value name="VALUE">
                <block type="text">
                  <field name="TEXT"></field>
                </block>
              </value>
              <next>
                <block type="controls_if">
                  <mutation elseif="3"></mutation>
                  <value name="IF0">
                    <block type="logic_compare">
                      <field name="OP">EQ</field>
                      <value name="A">
                        <block type="variables_get">
                          <field name="VAR">action</field>
                        </block>
                      </value>
                      <value name="B">
                        <block type="text">
                          <field name="TEXT">play</field>
                        </block>
                      </value>
                    </block>
                  </value>
                  <statement name="DO0">
                    <block type="GD5800_MP3_CONTROL">
                      <field name="CONTROL_TYPE">play();</field>
                      <value name="RXPIN">
                        <shadow type="pins_digital">
                          <field name="PIN">4</field>
                        </shadow>
                      </value>
                      <value name="TXPIN">
                        <shadow type="pins_digital">
                          <field name="PIN">5</field>
                        </shadow>
                      </value>
                    </block>
                  </statement>
                  <value name="IF1">
                    <block type="logic_compare">
                      <field name="OP">EQ</field>
                      <value name="A">
                        <block type="variables_get">
                          <field name="VAR">action</field>
                        </block>
                      </value>
                      <value name="B">
                        <block type="text">
                          <field name="TEXT">stop</field>
                        </block>
                      </value>
                    </block>
                  </value>
                  <statement name="DO1">
                    <block type="GD5800_MP3_CONTROL">
                      <field name="CONTROL_TYPE">pause();</field>
                      <value name="RXPIN">
                        <shadow type="pins_digital">
                          <field name="PIN">4</field>
                        </shadow>
                      </value>
                      <value name="TXPIN">
                        <shadow type="pins_digital">
                          <field name="PIN">5</field>
                        </shadow>
                      </value>
                    </block>
                  </statement>
                  <value name="IF2">
                    <block type="logic_compare">
                      <field name="OP">EQ</field>
                      <value name="A">
                        <block type="variables_get">
                          <field name="VAR">action</field>
                        </block>
                      </value>
                      <value name="B">
                        <block type="text">
                          <field name="TEXT">next</field>
                        </block>
                      </value>
                    </block>
                  </value>
                  <statement name="DO2">
                    <block type="GD5800_MP3_CONTROL">
                      <field name="CONTROL_TYPE">next();</field>
                      <value name="RXPIN">
                        <shadow type="pins_digital">
                          <field name="PIN">4</field>
                        </shadow>
                      </value>
                      <value name="TXPIN">
                        <shadow type="pins_digital">
                          <field name="PIN">5</field>
                        </shadow>
                      </value>
                    </block>
                  </statement>
                  <value name="IF3">
                    <block type="logic_compare">
                      <field name="OP">EQ</field>
                      <value name="A">
                        <block type="variables_get">
                          <field name="VAR">action</field>
                        </block>
                      </value>
                      <value name="B">
                        <block type="text">
                          <field name="TEXT">prev</field>
                        </block>
                      </value>
                    </block>
                  </value>
                  <statement name="DO3">
                    <block type="GD5800_MP3_CONTROL">
                      <field name="CONTROL_TYPE">prev();</field>
                      <value name="RXPIN">
                        <shadow type="pins_digital">
                          <field name="PIN">4</field>
                        </shadow>
                      </value>
                      <value name="TXPIN">
                        <shadow type="pins_digital">
                          <field name="PIN">5</field>
                        </shadow>
                      </value>
                    </block>
                  </statement>
                </block>
              </next>
            </block>
          </statement>
        </block>
        <block type="blynk_light">
          <field name="Vpin">V0</field>
          <statement name="DO">
            <block type="serial_println">
              <field name="serial_select">Serial</field>
              <value name="CONTENT">
                <block type="variables_get">
                  <field name="VAR">lx</field>
                </block>
              </value>
            </block>
          </statement>
        </block>
        <block type="blynk_gravity">
          <field name="Vpin">V0</field>
          <statement name="DO">
            <block type="serial_println">
              <field name="serial_select">Serial</field>
              <value name="CONTENT">
                <block type="variables_get">
                  <field name="VAR">x</field>
                </block>
              </value>
              <next>
                <block type="serial_println">
                  <field name="serial_select">Serial</field>
                  <value name="CONTENT">
                    <block type="variables_get">
                      <field name="VAR">y</field>
                    </block>
                  </value>
                  <next>
                    <block type="serial_println">
                      <field name="serial_select">Serial</field>
                      <value name="CONTENT">
                        <block type="variables_get">
                          <field name="VAR">z</field>
                        </block>
                      </value>
                    </block>
                  </next>
                </block>
              </next>
            </block>
          </statement>
        </block>
        <block type="blynk_acc">
          <field name="Vpin">V0</field>
          <statement name="DO">
            <block type="serial_println">
              <field name="serial_select">Serial</field>
              <value name="CONTENT">
                <block type="variables_get">
                  <field name="VAR">x</field>
                </block>
              </value>
              <next>
                <block type="serial_println">
                  <field name="serial_select">Serial</field>
                  <value name="CONTENT">
                    <block type="variables_get">
                      <field name="VAR">y</field>
                    </block>
                  </value>
                  <next>
                    <block type="serial_println">
                      <field name="serial_select">Serial</field>
                      <value name="CONTENT">
                        <block type="variables_get">
                          <field name="VAR">z</field>
                        </block>
                      </value>
                    </block>
                  </next>
                </block>
              </next>
            </block>
          </statement>
        </block>
        <block type="Blynk_iot_CONNECT_STATE">
          <statement name="DO"></statement>
        </block>

        <block type="Blynk_iot_BLYNK_syncAll">
        </block>
        <block type="blynk_iot_syncVirtual">
          <field name="Vpin">V0</field>
        </block>
        <block type="esp_camera">
          <value name="wifi_ssid">
            <shadow type="text">
              <field name="TEXT">wifi_ssid</field>
            </shadow>
          </value>
          <value name="wifi_pass">
            <shadow type="text">
              <field name="TEXT">wifi_pass</field>
            </shadow>
          </value>
        </block>
        <block type="esp_camera_blynk">
          <value name="wifi_ssid">
            <shadow type="text">
              <field name="TEXT">wifi_ssid</field>
            </shadow>
          </value>
          <value name="wifi_pass">
            <shadow type="text">
              <field name="TEXT">wifi_pass</field>
            </shadow>
          </value>
          <value name="server">
            <shadow type="text">
              <field name="TEXT">blynk.mixly.org</field>
            </shadow>
          </value>
          <value name="auth">
            <shadow type="text">
              <field name="TEXT">d3zp3AugUO0Y0wetEbHmHDk192q2LwzA</field>
            </shadow>
          </value>
        </block>
        <block type="take_a_photo1"></block>
      </category>
      <category id="catMQTT" colour="0">
        <block type="MQTT_server">
          <value name="server_add">
            <shadow type="text">
              <field name="TEXT">39.98.114.122</field>
            </shadow>
          </value>
          <value name="server_port">
            <shadow type="math_number">
              <field name="NUM">1883</field>
            </shadow>
          </value>
          <value name="Client_ID">
            <shadow type="text">
              <field name="TEXT">ID</field>
            </shadow>
          </value>
          <value name="IOT_ID">
            <shadow type="text">
              <field name="TEXT">siot</field>
            </shadow>
          </value>
          <value name="IOT_PWD">
            <shadow type="text">
              <field name="TEXT">siot</field>
            </shadow>
          </value>
        </block>
        <block type="MQTT_publish">
          <value name="data">
            <shadow type="math_number">
              <field name="NUM">120</field>
            </shadow>
          </value>
          <value name="Topic">
            <shadow type="text">
              <field name="TEXT">Topic_0</field>
            </shadow>
          </value>
        </block>
        <block type="MQTT_subscribe">
          <statement name="DO0">
            <block type="serial_println">
              <field name="serial_select">Serial</field>
              <value name="CONTENT">
                <block type="MQTT_subscribe_value">
                </block>
              </value>
            </block>
          </statement>
        </block>
        <block type="mixio_mqtt_subscribe">
          <value name="server">
            <shadow type="text">
              <field name="TEXT">mixio.mixly.org</field>
            </shadow>
          </value>
          <value name="port">
            <shadow type="text">
              <field name="TEXT">1883</field>
            </shadow>
          </value>
          <value name="mqtt_username">
            <shadow type="text">
              <field name="TEXT">12345678@qq.com</field>
            </shadow>
          </value>
          <value name="mqtt_password">
            <shadow type="text">
              <field name="TEXT">d86d2e60b813590963e2641b44945154</field>
            </shadow>
          </value>
          <value name="project">
            <shadow type="text">
              <field name="TEXT">test</field>
            </shadow>
          </value>
        </block>

        <block type="mixio_mqtt_subscribe_key"></block>

        <block type="mixio_mqtt_received_the_news">
          <value name="topic">
            <shadow type="text">
              <field name="TEXT">text</field>
            </shadow>
          </value>
          <statement name="function">
            <block type="serial_println">
              <field name="serial_select">Serial</field>
              <field name="new_line">println</field>
              <value name="CONTENT">
                <block type="variables_get">
                  <field name="VAR">mqtt_data</field>
                </block>
              </value>
            </block>
          </statement>
        </block>

        <block type="mixio_mqtt_publish">
          <value name="data">
            <shadow type="text">
              <field name="TEXT">Hello</field>
            </shadow>
          </value>
          <value name="topic">
            <shadow type="text">
              <field name="TEXT">text</field>
            </shadow>
          </value>
        </block>
      </category>
    </category>
    <sep></sep>
    <category id="catFactory" name="catFactory" colour="#777777">
      <block type="factory_include"></block>
      <block type="factory_function_noreturn"></block>
      <block type="factory_function_return"></block>
      <block type="factory_declare"></block>
      <block type="factory_declare2"></block>
      <block type="factory_define"></block>
      <block type="factory_callMethod_noreturn"></block>
      <block type="factory_callMethod_return"></block>
      <block type="factory_static_method_noreturn"></block>
      <block type="factory_static_method_return"></block>
      <block type="factory_block"></block>
      <block type="factory_block_return"></block>
      <block type="factory_block_with_textarea"></block>
      <block type="factory_block_return_with_textarea"></block>
    </category>
    <category id="catTools" name="catTools" colour="#555555">
      <block type="IICSCAN"></block>
      <block type="factory_notes"></block>
      <block type="folding_block"></block>
      <block type="asyncelegantota"></block>
      <block type="esp32_pin"></block>
    </category>
  </xml>
  <script>
    if (company_block != null) {
      $('#toolbox').append(company_block);
    }
    if (myblock != null) {
      $('#toolbox').append(myblock);
    }
  </script>
  <script type="text/javascript" src="../common/library-init.js"></script>
</body>

</html>